<?php
namespace app\forum_admin\controller;

use app\BaseController;
use think\facade\Config;
use think\facade\Env;
use think\facade\Db;
use \think\facade\Filesystem;
use think\Validate;
use think\Model;

class Advdeal extends BaseController
{
	use \liliuwei\think\Jump;
	// 检查登录状态
	public function check()
	{
		// 如果没有登录，就做出限制
		if (!session('?aNick')) {
			$this->error("请登录后在访问该功能！","admin/alogin");
		}
	}

	// 检查aid的方法
	public function checkAid($aid)
	{
		if ($aid==null) {
			$this->error("操作有误，请重试");
		}else{
			$advid=DB::name("adv")
				->where('a_id',$aid)
				->find();
			if ($advid==null) {
				$this->error("查无此广告");
			}
		}
	}

	// 检查bid的方法
	public function checkBid($bid)
	{
		if ($bid==null) {
			$this->error("操作有误，请重试");
		}else{
			$boxid=DB::name("box")
				->where('b_id',$bid)
				->find();
			if ($boxid==null) {
				$this->error("查无此轮播图");
			}
		}
	}

	// 管理轮播图
	public function boxDeal($find='%',$boxnum=5)
	{
		$this->check();
		$b_id=input('b_id');
		// 如果有传递$b_id和就删除轮播图
		if ($b_id!=null  ) {
			$this->checkBid($b_id);
			$b_img=DB::name('box')
				  ->where('b_id',$b_id)
				  ->value('b_img');
			$fileDel=app()->getRootPath() . 'public/static/forum/box/'.$b_img;
			if (file_exists($fileDel)) {
				unlink($fileDel);
			}
			$box=DB::name('box')
				->where('b_id',$b_id)
				->delete();
			if ($box!=0) {
				$this->success('删除轮播图成功');
			}else{
				$this->error('删除轮播图失败');
			}
		}

		// 模糊查询
		$search='%'.$find.'%';
		$box = Db::name('box')
            ->order('b_createat')
            ->where('b_title|b_content', 'like', $search)
            ->paginate([
                'list_rows' => $boxnum,
                'query' => request()->param(),    
            ]);
        $page = $box->render();
        
        $boxrend = Db::name('box')
                ->field('b_img,b_aok,b_title,b_content')
                ->select();
        $num=1;

		return view('',['box'=>$box,'num'=>$num,'page'=>$page,'boxrend'=>$boxrend]);
	}
	public function boxOk()
	{
		$this->check();
		// 如果有传递$b_aok和b_id就修改轮播图状态
		$b_id=input('b_id');
		$b_aok=input('b_aok');
		if ($b_id!=null and $b_aok!=null) {
			$this->checkBid($b_id);
			$box=DB::name('box')
				->where('b_id',$b_id)
				->update(['b_aok'=>$b_aok]);
			if ($box!=0) {
				$this->success('修改轮播图状态成功');
			}else{
				$this->error('修改轮播图状态失败');
			}
		}
		return view();
	}

	// 添加轮播图
	public function boxAdd()
	{
		$this->check();
		return view();
	}

	public function boxDoAdd()
	{
		$this->check();
		$b_title=input('b_title');
		$b_content=input('b_content');
		$m_id = input('m_id');
		$file = request()->file('image');
		try{
			validate(['file' => ['fileSize:102400', 'fileExt:jpg,png,gif']])
			->check(['file' => $file]);
		}catch(\think\exception\ValidateException $e){
			$mes = $e->getMessage();
			if ($mes=="上传文件后缀不允许") {
				$this->error("文件上传格式只允许jpg、gif、png、jpeg");
				exit();
			}else{
				$this->error("文件上传大小不得大于100K！");
				exit();
			}
		}
		$savename= Filesystem::disk('public')->putFile('box', $file);
		// echo   $savename;
    	// 获取文件保存到数据库中的信息,同时将b_aok修改为0
    	$fileInfo=substr($savename,4);
    	$meinsert=Db::name('box')
    			->insert([
    				'b_img'=>$fileInfo,
                    'b_title'=>$b_title,
                    'b_createat'=>time(),
                    'b_content'=>$b_content,
                    'b_aok'=>0,
                    'm_id'=>$m_id,
    				]);
    	if ($meinsert==1) {
    		$this->success('上传成功，即将返回轮播图管理页面','advdeal/boxDeal');
    	}else{
    		$this->error('上传失败');
    	}
	}

	// 修改轮播图
	public function boxInfo()
	{
		$this->check();
		$b_id=input('b_id');
		$this->checkBid($b_id);
		$box=Db::name("box")
			->field('b_id,b_img,b_title,b_createat,b_content,b_aok,m_id')
			->where('b_id',$b_id)
			->select();
		return view('',['box'=>$box]);
	}
	
	public function boxInfoModi()
	{
		$this->check();
		// 如果有传递$b_aok和b_id就修改轮播图状态
		$b_id=input('b_id');
		$b_title=input('b_title');
		$b_content=input('b_content');
		$m_id = input('m_id');
		$img=DB::name('box')
			->where('b_id',$b_id)
			->value('b_img');
		$file = request()->file('image');
		try{
			validate(['file' => ['fileSize:102400', 'fileExt:jpg,png,gif']])
			->check(['file' => $file]);
		}catch(\think\exception\ValidateException $e){
			$mes = $e->getMessage();
			if ($mes=="上传文件后缀不允许") {
				$this->error("文件上传格式只允许jpg、gif、png、jpeg");
				exit();
			}else{
				$this->error("文件上传大小不得大于100K！");
				exit();
			}
		}
		$savename= Filesystem::disk('public')->putFile('box', $file);
		$fileInfo=substr($savename,4);
		$myUpdate=Db::name('box')
				->where('b_id', $b_id)
    			->update([
    				'b_img'=>$fileInfo,
                    'b_title'=>$b_title,
                    'b_createat'=>time(),
                    'b_content'=>$b_content,
                    'b_aok'=>1,
                    'm_id'=>$m_id
    				]);

    	if ($myUpdate==1) {
    		# 更新记录成功
          	# 删除旧的文件
    		$fileDel=app()->getRootPath() . 'public/static/forum/box/'.$img;
    		if (file_exists($fileDel)) {
				unlink($fileDel);
			}
			$this -> success('修改成功，即将返回轮播图管理页面','advdeal/boxDeal');
    	}else{
    		# 更新记录失败
    		$this->error('修改失败');
    	}
	}

	// 广告管理
	public function advDeal()
	{
		$this->check();
		$aid=input('a_id');

        // 如果只有传递$a_id就删除广告
        if ($aid!=null) {
           $this->checkAid($aid);
	        // 获取表单上传文件对象
	        //获取就文件路径
	        $img=Db::name("adv")
	             ->where('a_id',$aid)
	             ->value('a_img');
	        #删除旧的文件
	        $fileDel=app()->getRootPath() . 'public/static/forum/adv/'.$img;
	        if (file_exists($fileDel)) {
	            unlink($fileDel);
	        }
                
	    	$adv=Db::name("adv")
	    		->where('a_id',$aid)
	    		->delete();
	        if ($adv!=0) {
	            $this->success('删除广告成功');
	        }else{
	            $this->error('删除广告失败');
	        }
    	}

        // 如果只有传递$find就搜索广告
        $find=input('find');
        if ($find!=null) {
            $adv=Db::name("adv")
                ->field('a_id,a_img,a_title,a_createat,a_content,a_path,a_aok,m_id')
                ->whereLike('a_title',"%$find%")
                ->paginate(5);
        }else{
            $adv=Db::name("adv")
                ->field('a_id,a_img,a_title,a_createat,a_content,a_path,a_aok,m_id')
                ->paginate(5);
        }
        $num=1;
        //单独赋值分页输出的模板变量
        $page=$adv->render();

      return view('',['adv'=>$adv,'page' => $page,'num'=>$num]);
	}

	public function advOk()
	{
		// 如果有传递$a_aok和a_id就修改广告状态
		$a_id=input('a_id');
		$a_aok=input('a_aok');
		if ($a_id!=null and $a_aok!=null) {
			$this->checkAid($a_id);
			$adv=DB::name('adv')
				->where('a_id',$a_id)
				->update(['a_aok'=>$a_aok]);
			if ($adv!=0) {
				$this->success('修改广告状态成功');
			}else{
				$this->error('修改广告状态失败');
			}
		}
		return view();
	}

	// 添加广告
	public function advAdd()
	{
		$this->check();
		return view();
	}

	public function advDoAdd()
	{
		$this->check();
		$a_title=input('a_title');
		$a_content=input('a_content');
		$m_id = input('m_id');
		$file = request()->file('a_img');
		try{
			validate(['file' => ['fileSize:102400', 'fileExt:jpg,png,gif']])
			->check(['file' => $file]);
		}catch(\think\exception\ValidateException $e){
			$mes = $e->getMessage();
			if ($mes=="上传文件后缀不允许") {
				$this->error("文件上传格式只允许jpg、gif、png、jpeg");
				exit();
			}else{
				$this->error("文件上传大小不得大于100K！");
				exit();
			}
		}
		$savename= Filesystem::disk('public')->putFile('adv', $file);
		// echo   $savename;
    	// 获取文件保存到数据库中的信息,同时将a_aok修改为0
    	$fileInfo=substr($savename,4);
    	$meinsert=Db::name('adv')
    			->insert([
    				'a_img'=>$fileInfo,
                    'a_title'=>$a_title,
                    'a_createat'=>time(),
                    'a_content'=>$a_content,
                    'a_aok'=>0,
                    'm_id'=>$m_id,
    				]);
    	if ($meinsert==1) {
    		$this->success('上传成功，即将返回广告管理页面','advdeal/advDeal');
    	}else{
    		$this->error('上传失败');
    	}
	}

	// 修改广告
	public function  advInfo()
	{
		$this->check();
		$a_id=input('a_id');
		$this->checkAid($a_id);
		$adv=Db::name("adv")
			->field('a_id,a_img,a_title,a_createat,a_content,a_path')
			->where('a_id',$a_id)
			->select();
		return view('',['adv'=>$adv]);
	}

	public function advInfoModi()
	{
		$this->check();
		$a_id=input('a_id');
		$a_title=input('a_title');
        $a_content=input('a_content');
        $a_path=input('a_path');
        $img=Db::name("adv")
            ->where('a_id',$a_id)
            ->value('a_img');
        $file = request()->file('image');
        try{
        	validate(['file' => ['fileSize:1048576', 'fileExt:jpg,png,gif']])
        	->check(['file' => $file]);
        }catch(\think\exception\ValidateException $e){
        	$mes = $e->getMessage();
			if ($mes=="上传文件后缀不允许") {
				$this->error("文件上传格式只允许jpg、gif、png、jpeg");
				exit();
			}else{
				$this->error("文件上传大小不得大于100K！");
				exit();
			}
        }
        $savename= Filesystem::disk('public')->putFile('adv', $file);
        echo   $savename;
        $fileInfo=substr($savename,4);
        $meUpadte=Db::name('adv')
         		 ->where('a_id',$a_id)
         		 ->update([
         		 	'a_img'=>$fileInfo,
         		 	'a_title'=>$a_title,
         		 	'a_createat'=>time(),
         		 	'a_content'=>$a_content,
         		 	'a_aok'=>1,
         		 	'a_path'=>$a_path
         		 	]);
        if ($meUpadte==1) {
        	$fileDel=app()->getRootPath() . 'public/static/forum/adv/'.$img;
        	if (file_exists($fileDel)) {
        		unlink($fileDel);
        	}
        	$this->success('修改成功，即将返回广告管理页面','advdeal/advDeal');
        }else{
        	 $this->error('修改失败');
        }
	}
}